{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0b21e6e9",
   "metadata": {},
   "source": [
    "# 0. Import Libraries"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a2370c44",
   "metadata": {},
   "source": [
    "!pip install pandas\n",
    "!pip install matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a5101882",
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import tensorflow.keras as keras\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.layers import *\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from scipy.io import loadmat\n",
    "from scipy.io import savemat\n",
    "import math\n",
    "\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9a461153",
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy.random import seed\n",
    "seed(0)\n",
    "tf.random.set_seed(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90e0a62c",
   "metadata": {},
   "source": [
    "# 1. Define Something in Advance"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52694299",
   "metadata": {},
   "source": [
    "# 2. Initialize the Grid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cb09ad87",
   "metadata": {},
   "outputs": [],
   "source": [
    "delta = 0.05\n",
    "x_domain = np.arange(0, 1+delta, delta)\n",
    "y_domain = np.arange(0, 1+delta, delta)\n",
    "x_mesh,y_mesh = np.meshgrid(x_domain, y_domain)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aff173b7",
   "metadata": {},
   "source": [
    "# 3. Define Physical Info."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45a38f16",
   "metadata": {},
   "source": [
    "    suppose: \n",
    "    x = x[0];\n",
    "    y = x[1];\n",
    "    uxy = x[2]; \n",
    "    dudx = x[3];\n",
    "    dudy = x[4];\n",
    "    du2dx2 = x[5];\n",
    "    du2dy2 = x[6];\n",
    "    du2dxdy = x[7];\n",
    "    laplace = x[8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "143fcddc",
   "metadata": {},
   "outputs": [],
   "source": [
    "governing_equation_components = []\n",
    "governing_equation_components.append(Lambda(lambda x: x[5]))\n",
    "governing_equation_components.append(Lambda(lambda x: x[6]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "040914e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "governing_equation_mask = x_mesh*0\n",
    "governing_equation_mask[1:-1,1:-1] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6eec9434",
   "metadata": {},
   "outputs": [],
   "source": [
    "fx = governing_equation_mask*(x_mesh*0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d2faaa4a",
   "metadata": {},
   "outputs": [],
   "source": [
    "estimate_equation_form = False\n",
    "equation_component_combination = [1.0,5.0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a647c8f2",
   "metadata": {},
   "source": [
    "# 4. Define the Observations"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee89c021",
   "metadata": {},
   "source": [
    "    suppose: \n",
    "    x = x[0];\n",
    "    y = x[1];\n",
    "    uxy = x[2]; \n",
    "    dudx = x[3];\n",
    "    dudy = x[4];\n",
    "    du2dx2 = x[5];\n",
    "    du2dy2 = x[6];\n",
    "    du2dxdy = x[7];\n",
    "    laplace = x[8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "28d1ac32",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_components = []\n",
    "observation_components.append(Lambda(lambda x: x[2]))\n",
    "observation_components.append(Lambda(lambda x: x[3]))\n",
    "observation_components.append(Lambda(lambda x: x[4]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "41dc785c",
   "metadata": {},
   "source": [
    "    format: [x,y,combination,value]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "ff1e2ce1",
   "metadata": {},
   "outputs": [],
   "source": [
    "truth_smooth = loadmat('data.mat')['uxy_list'][-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "27ef0d34",
   "metadata": {},
   "outputs": [],
   "source": [
    "truth_data = loadmat('data.mat')['uxy_list'][-1] + np.random.normal(loc=0.0, scale=0.3, size=x_mesh.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9b5560ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(21, 21)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "truth_data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2d64204",
   "metadata": {},
   "source": [
    "observation_data = []\n",
    "\n",
    "theta_list = np.linspace(0,np.pi*2,800)\n",
    "for theta in theta_list:\n",
    "    x = x_theta(theta)\n",
    "    y = y_theta(theta)\n",
    "    comb = [1,0,0]\n",
    "    v = U(x,y)\n",
    "    observation_data.append([x,y,comb,v])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d02e9dae",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data = []\n",
    "for x,y,v in zip(x_mesh.ravel(),y_mesh.ravel(),truth_data.ravel()):\n",
    "    comb = [1,0,0]\n",
    "    observation_data.append([x,y,comb,v])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2270ab5c",
   "metadata": {},
   "source": [
    "# 5. Define PICN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c05580e3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_x_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[-1.0/delta]], [[1.0/delta]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "bb1cf4d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_x2_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[1.0/delta**2]], [[-2.0/delta**2]], [[1.0/delta**2]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2ed662f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_y_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[-1.0/delta]]], [[[1.0/delta]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "bbbbf69d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_y2_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[1.0/delta**2]]], [[[-2.0/delta**2]]], [[[1.0/delta**2]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "7f852ff4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_xy_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[1.0/delta**2]], [[-1.0/delta**2]]], [[[-1.0/delta**2]], [[1.0/delta**2]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "4fac796a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def laplace_kernal_init(shape, dtype=tf.float32):\n",
    "    return tf.constant([[[[0]], [[1.0/delta**2]], [[0]]], [[[1.0/delta**2]], [[-4.0/delta**2]], [[1.0/delta**2]]], [[[0]], [[1.0/delta**2]], [[0]]]], dtype=dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "858a79b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "inputs = [keras.layers.Input(shape=(1,1,1)),\n",
    "          keras.layers.Input(shape=(len(y_domain),len(x_domain),1)),\n",
    "          keras.layers.Input(shape=(len(y_domain),len(x_domain),1)),\n",
    "          keras.layers.Input(shape=(len(observation_data),len(observation_components)*4)),\n",
    "          keras.layers.Input(shape=(len(y_domain),len(x_domain),1))]\n",
    "\n",
    "hidden_field = keras.layers.Conv2DTranspose(filters=1, \n",
    "                                            kernel_size=[len(y_domain)+4,len(x_domain)+4], \n",
    "                                            activation='linear')(inputs[0])\n",
    "coordinates_x = inputs[1]\n",
    "coordinates_y = inputs[2]\n",
    "field = keras.layers.Conv2D(filters=1, \n",
    "                            kernel_size=3, \n",
    "                            padding='valid', \n",
    "                            activation=Lambda(lambda x: x))(hidden_field)\n",
    "gradient_x_field = keras.layers.Conv2D(filters=1, \n",
    "                                     kernel_size=[1,2], \n",
    "                                     padding='valid',\n",
    "                                     use_bias=False,\n",
    "                                     trainable=False,\n",
    "                                     kernel_initializer=gradient_x_kernal_init)(field)\n",
    "gradient_x2_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[1,3], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=gradient_x2_kernal_init)(field)\n",
    "gradient_y_field = keras.layers.Conv2D(filters=1, \n",
    "                                     kernel_size=[2,1], \n",
    "                                     padding='valid',\n",
    "                                     use_bias=False,\n",
    "                                     trainable=False,\n",
    "                                     kernel_initializer=gradient_y_kernal_init)(field)\n",
    "gradient_y2_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[3,1], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=gradient_y2_kernal_init)(field)\n",
    "gradient_xy_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[2,2], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=gradient_xy_kernal_init)(field)\n",
    "laplace_field = keras.layers.Conv2D(filters=1, \n",
    "                                       kernel_size=[3,3], \n",
    "                                       padding='valid',\n",
    "                                       use_bias=False,\n",
    "                                       trainable=False,\n",
    "                                       kernel_initializer=laplace_kernal_init)(field)\n",
    "phycial_fields = [coordinates_x,\n",
    "                  coordinates_y,\n",
    "                  field[:,1:-1,1:-1,:],\n",
    "                  gradient_x_field[:,1:-1,1:,:],\n",
    "                  gradient_y_field[:,1:,1:-1,:],\n",
    "                  gradient_x2_field[:,1:-1,:,:],\n",
    "                  gradient_y2_field[:,:,1:-1,:],\n",
    "                  gradient_xy_field[:,1:,1:,:],\n",
    "                  laplace_field]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f9985fe3",
   "metadata": {},
   "outputs": [],
   "source": [
    "if estimate_equation_form==True:\n",
    "    tf_governing_equation_components = [component(phycial_fields) for component in governing_equation_components]\n",
    "    concat_equation_components = Lambda(lambda x: tf.concat(x,axis=-1))(tf_governing_equation_components)\n",
    "    governing_equation = keras.layers.Conv2D(filters=1, \n",
    "                                             kernel_size=[1,1], \n",
    "                                             padding='valid',\n",
    "                                             use_bias=False)(concat_equation_components)*inputs[4]\n",
    "else:\n",
    "    tf_weighted_governing_equation_components = [weight*component(phycial_fields) for [weight,component] in zip(equation_component_combination,governing_equation_components)]\n",
    "    concat_weighted_equation_components = Lambda(lambda x: tf.concat(x,axis=-1))(tf_weighted_governing_equation_components)\n",
    "    governing_equation = Lambda(lambda x: tf.reduce_sum(x,axis=-1,keepdims=True))(concat_weighted_equation_components)*inputs[4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "0acc5d42",
   "metadata": {},
   "outputs": [],
   "source": [
    "tf_observation_components = [component(phycial_fields) for component in observation_components]\n",
    "concat_observation_components = Lambda(lambda x: tf.concat(x,axis=-1))(tf_observation_components)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ccbe78d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "left_x_position_index_list = []\n",
    "right_x_position_index_list = []\n",
    "left_x_position_weight_list = []\n",
    "right_x_position_weight_list = []\n",
    "\n",
    "bottom_y_position_index_list = []\n",
    "top_y_position_index_list = []\n",
    "bottom_y_position_weight_list = []\n",
    "top_y_position_weight_list = []\n",
    "\n",
    "\n",
    "for data in observation_data:\n",
    "    \n",
    "    left_x_position_index = int(np.floor((data[0] - x_domain[0])/delta))\n",
    "    right_x_position_index = left_x_position_index + 1\n",
    "    left_x_position_weight = 1-(data[0] - (x_domain[0]+delta*left_x_position_index))/delta\n",
    "    right_x_position_weight = 1-left_x_position_weight\n",
    "    \n",
    "    bottom_y_position_index = int(np.floor((data[1] - y_domain[0])/delta))\n",
    "    top_y_position_index = bottom_y_position_index + 1\n",
    "    bottom_y_position_weight = 1-(data[1] - (y_domain[0]+delta*bottom_y_position_index))/delta\n",
    "    top_y_position_weight = 1-bottom_y_position_weight\n",
    "    \n",
    "    if data[0] <= x_domain[0] + 1e-8:\n",
    "        left_x_position_index = 0\n",
    "        right_x_position_index = 1\n",
    "        left_x_position_weight = 1\n",
    "        right_x_position_weight = 0\n",
    "    if data[0] >= x_domain[-1] - 1e-8:\n",
    "        left_x_position_index = len(x_domain)-2\n",
    "        right_x_position_index = len(x_domain)-1\n",
    "        left_x_position_weight = 0\n",
    "        right_x_position_weight = 1\n",
    "    if data[1] <= y_domain[0] + 1e-8:\n",
    "        bottom_y_position_index = 0\n",
    "        top_y_position_index = 1\n",
    "        bottom_y_position_weight = 1\n",
    "        top_y_position_weight = 0\n",
    "    if data[1] >= y_domain[-1] - 1e-8:\n",
    "        bottom_y_position_index = len(y_domain)-2\n",
    "        top_y_position_index = len(y_domain)-1\n",
    "        bottom_y_position_weight = 0\n",
    "        top_y_position_weight = 1\n",
    "    \n",
    "    left_x_position_index_list.append(left_x_position_index)\n",
    "    right_x_position_index_list.append(right_x_position_index)\n",
    "    left_x_position_weight_list.append(left_x_position_weight)\n",
    "    right_x_position_weight_list.append(right_x_position_weight)\n",
    "\n",
    "    bottom_y_position_index_list.append(bottom_y_position_index)\n",
    "    top_y_position_index_list.append(top_y_position_index)\n",
    "    bottom_y_position_weight_list.append(bottom_y_position_weight)\n",
    "    top_y_position_weight_list.append(top_y_position_weight)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "07f61683",
   "metadata": {},
   "outputs": [],
   "source": [
    "left_bottom_indices = tf.constant([[0,y,x] for x,y in zip(left_x_position_index_list,bottom_y_position_index_list)])\n",
    "left_top_indices = tf.constant([[0,y,x] for x,y in zip(left_x_position_index_list,top_y_position_index_list)])\n",
    "right_bottom_indices = tf.constant([[0,y,x] for x,y in zip(right_x_position_index_list,bottom_y_position_index_list)])\n",
    "right_top_indices = tf.constant([[0,y,x] for x,y in zip(right_x_position_index_list,top_y_position_index_list)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5d7fafb6",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data_left_bottom_part = Lambda(lambda x: tf.gather_nd(x,left_bottom_indices))(concat_observation_components)\n",
    "observation_data_left_top_part = Lambda(lambda x: tf.gather_nd(x,left_top_indices))(concat_observation_components)\n",
    "observation_data_right_bottom_part = Lambda(lambda x: tf.gather_nd(x,right_bottom_indices))(concat_observation_components)\n",
    "observation_data_right_top_part = Lambda(lambda x: tf.gather_nd(x,right_top_indices))(concat_observation_components)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "b31ebd19",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data_four_part = Lambda(lambda x: tf.expand_dims(tf.concat(x,axis=-1),axis=0))([observation_data_left_bottom_part,observation_data_left_top_part,observation_data_right_bottom_part,observation_data_right_top_part])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "1459fbc8",
   "metadata": {},
   "outputs": [],
   "source": [
    "observation_data_interpolation_weights = np.expand_dims(\n",
    "np.asarray([np.concatenate([(np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*left_x_position_weight_list[i]*bottom_y_position_weight_list[i],\n",
    " (np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*left_x_position_weight_list[i]*top_y_position_weight_list[i],\n",
    " (np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*right_x_position_weight_list[i]*bottom_y_position_weight_list[i],\n",
    " (np.asarray([observation_data[i][2][j] for j in range(len(observation_components))]))*right_x_position_weight_list[i]*top_y_position_weight_list[i]],axis=-1) for i in range(len(observation_data))]),\n",
    "    axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e39b91a6",
   "metadata": {},
   "outputs": [],
   "source": [
    "observations = Lambda(lambda x: tf.reduce_sum(x[0]*x[1],axis=-1))([inputs[3][0,:,:],observation_data_four_part])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "c2c9be15",
   "metadata": {},
   "outputs": [],
   "source": [
    "pde_model = keras.Model(inputs=inputs[:3], outputs=phycial_fields)\n",
    "pde_model_train = keras.Model(inputs=inputs, outputs=[governing_equation,observations])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8dbf6c1e",
   "metadata": {},
   "source": [
    "# 6. Prepare the Training Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "e13964ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 1, 1, 1)\n"
     ]
    }
   ],
   "source": [
    "unit_constant = np.asarray([[[[1.0]]]],dtype=np.float32)\n",
    "training_input_data_0 = unit_constant\n",
    "print(training_input_data_0.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "03abae6b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_1 = np.expand_dims(x_mesh.astype(np.float32),axis=[0,-1])\n",
    "print(training_input_data_1.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "bfb2a398",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_2 = np.expand_dims(y_mesh.astype(np.float32),axis=[0,-1])\n",
    "print(training_input_data_2.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "1e42e21c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 441, 12)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_3 = observation_data_interpolation_weights.astype(np.float32)\n",
    "print(training_input_data_3.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d7a8b07b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_input_data_4 = np.expand_dims(governing_equation_mask.astype(np.float32),axis=[0,-1])\n",
    "print(training_input_data_2.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "83251413",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 21, 21, 1)\n"
     ]
    }
   ],
   "source": [
    "training_label_data_0 = np.expand_dims(fx.astype(np.float32),axis=[0,-1])\n",
    "print(training_label_data_0.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "09992122",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 441)\n"
     ]
    }
   ],
   "source": [
    "training_label_data_1 = np.expand_dims(np.asarray([data[3] for data in observation_data]),axis=[0])\n",
    "print(training_label_data_1.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "3ae901b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "training_input_data = [training_input_data_0,training_input_data_1,training_input_data_2,training_input_data_3,training_input_data_4]\n",
    "training_label_data = [training_label_data_0,training_label_data_1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d3ecd9a",
   "metadata": {},
   "source": [
    "# 7. Train the Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "da87972b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['loss', 'tf_op_layer_Mul_2_loss', 'lambda_14_loss']\n"
     ]
    }
   ],
   "source": [
    "pde_model_train.compile(optimizer=keras.optimizers.Adam(), loss=\"mse\")\n",
    "pde_model_train.save_weights('picn_initial_weights.h5')\n",
    "temp_history = pde_model_train.fit(x=training_input_data, y=training_label_data, epochs=1, verbose=0)\n",
    "history_keys = []\n",
    "for key in temp_history.history.keys():\n",
    "    history_keys.append(key)\n",
    "print(history_keys)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "daa7785a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def record_predictions():\n",
    "    [_, _, uxy, dudx, dudy, d2udx2, d2udy2, d2udxdy, laplace] = pde_model.predict(training_input_data[:3])\n",
    "    uxy_list.append(uxy[:,:,:,0])\n",
    "    dudx_list.append(dudx[:,:,:,0])\n",
    "    dudy_list.append(dudy[:,:,:,0])\n",
    "    d2udx2_list.append(d2udx2[:,:,:,0])\n",
    "    d2udy2_list.append(d2udy2[:,:,:,0])\n",
    "    d2udxdy_list.append(d2udxdy[:,:,:,0])\n",
    "    laplace_list.append(laplace[:,:,:,0])\n",
    "\n",
    "class Per_X_Epoch_Record(tf.keras.callbacks.Callback):\n",
    "    def __init__(self, record_interval, verbose=1):\n",
    "        super(tf.keras.callbacks.Callback, self).__init__()\n",
    "        self.total_loss = history_keys[0]\n",
    "        self.domain_loss = history_keys[1]\n",
    "        self.bdc_loss = history_keys[2]\n",
    "        self.previous_total_loss = 9999999\n",
    "        self.record_interval = record_interval;\n",
    "        self.verbose = verbose\n",
    "\n",
    "    def on_epoch_end(self, epoch, logs={}):\n",
    "        \n",
    "        if epoch%self.record_interval == 0:\n",
    "            \n",
    "            current_total_loss = logs.get(self.total_loss)\n",
    "            current_domain_loss = logs.get(self.domain_loss)\n",
    "            current_bdc_loss = logs.get(self.bdc_loss)\n",
    "            \n",
    "            epoch_number_list.append(epoch)\n",
    "            total_loss_list.append(current_total_loss)\n",
    "            domain_loss_list.append(current_domain_loss)\n",
    "            boundary_loss_list.append(current_bdc_loss)\n",
    "        \n",
    "            if current_total_loss < self.previous_total_loss:\n",
    "                self.previous_total_loss = current_total_loss\n",
    "                pde_model_train.save_weights('picn_best_weights.h5')\n",
    "            \n",
    "            if self.verbose > 0:\n",
    "                print(\"epoch: {:10.5f} | total_loss: {:10.5f} | domain_loss: {:10.5f} | bdc_loss: {:10.5f}\".format(epoch,current_total_loss,current_domain_loss,current_bdc_loss))\n",
    "        \n",
    "            # evaluate the errors in f-domain\n",
    "            record_predictions()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "2dfa38e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "callbacks = [\n",
    "    Per_X_Epoch_Record(record_interval=200,verbose=1),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "09eccbbe",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:    0.00000 | total_loss:  443.33951 | domain_loss: 44271.01953 | bdc_loss:    0.63568\n",
      "epoch:  200.00000 | total_loss:   29.55967 | domain_loss: 2899.77393 | bdc_loss:    0.56761\n",
      "epoch:  400.00000 | total_loss:    7.33467 | domain_loss:  682.82336 | bdc_loss:    0.51155\n",
      "epoch:  600.00000 | total_loss:    3.36546 | domain_loss:  290.39761 | bdc_loss:    0.46615\n",
      "epoch:  800.00000 | total_loss:    1.95638 | domain_loss:  153.16701 | bdc_loss:    0.42900\n",
      "epoch: 1000.00000 | total_loss:    1.30743 | domain_loss:   91.30389 | bdc_loss:    0.39838\n",
      "epoch: 1200.00000 | total_loss:    0.96288 | domain_loss:   59.34837 | bdc_loss:    0.37313\n",
      "epoch: 1400.00000 | total_loss:    0.75786 | domain_loss:   40.89404 | bdc_loss:    0.35245\n",
      "epoch: 1600.00000 | total_loss:    0.62400 | domain_loss:   29.16789 | bdc_loss:    0.33568\n",
      "epoch: 1800.00000 | total_loss:    0.53098 | domain_loss:   21.19229 | bdc_loss:    0.32228\n",
      "epoch: 2000.00000 | total_loss:    0.46420 | domain_loss:   15.55509 | bdc_loss:    0.31177\n",
      "epoch: 2200.00000 | total_loss:    0.41577 | domain_loss:   11.51018 | bdc_loss:    0.30371\n",
      "epoch: 2400.00000 | total_loss:    0.38079 | domain_loss:    8.60695 | bdc_loss:    0.29769\n",
      "epoch: 2600.00000 | total_loss:    0.35577 | domain_loss:    6.53616 | bdc_loss:    0.29334\n",
      "epoch: 2800.00000 | total_loss:    0.33807 | domain_loss:    5.06755 | bdc_loss:    0.29030\n",
      "epoch: 3000.00000 | total_loss:    0.32561 | domain_loss:    4.02465 | bdc_loss:    0.28824\n",
      "epoch: 3200.00000 | total_loss:    0.31678 | domain_loss:    3.27422 | bdc_loss:    0.28690\n",
      "epoch: 3400.00000 | total_loss:    0.31039 | domain_loss:    2.71963 | bdc_loss:    0.28605\n",
      "epoch: 3600.00000 | total_loss:    0.30561 | domain_loss:    2.29443 | bdc_loss:    0.28552\n",
      "epoch: 3800.00000 | total_loss:    0.30187 | domain_loss:    1.95530 | bdc_loss:    0.28517\n",
      "epoch: 4000.00000 | total_loss:    0.29884 | domain_loss:    1.67542 | bdc_loss:    0.28493\n",
      "epoch: 4200.00000 | total_loss:    0.29629 | domain_loss:    1.43845 | bdc_loss:    0.28475\n",
      "epoch: 4400.00000 | total_loss:    0.29409 | domain_loss:    1.23445 | bdc_loss:    0.28459\n",
      "epoch: 4600.00000 | total_loss:    0.29217 | domain_loss:    1.05713 | bdc_loss:    0.28445\n",
      "epoch: 4800.00000 | total_loss:    0.29048 | domain_loss:    0.90217 | bdc_loss:    0.28431\n",
      "epoch: 5000.00000 | total_loss:    0.28899 | domain_loss:    0.76655 | bdc_loss:    0.28416\n",
      "epoch: 5200.00000 | total_loss:    0.28766 | domain_loss:    0.64789 | bdc_loss:    0.28402\n",
      "epoch: 5400.00000 | total_loss:    0.28648 | domain_loss:    0.54434 | bdc_loss:    0.28388\n",
      "epoch: 5600.00000 | total_loss:    0.28543 | domain_loss:    0.45436 | bdc_loss:    0.28373\n",
      "epoch: 5800.00000 | total_loss:    0.28450 | domain_loss:    0.37659 | bdc_loss:    0.28357\n",
      "epoch: 6000.00000 | total_loss:    0.28367 | domain_loss:    0.30985 | bdc_loss:    0.28341\n",
      "epoch: 6200.00000 | total_loss:    0.28294 | domain_loss:    0.25303 | bdc_loss:    0.28324\n",
      "epoch: 6400.00000 | total_loss:    0.28229 | domain_loss:    0.20507 | bdc_loss:    0.28307\n",
      "epoch: 6600.00000 | total_loss:    0.28171 | domain_loss:    0.16522 | bdc_loss:    0.28288\n",
      "epoch: 6800.00000 | total_loss:    0.28118 | domain_loss:    0.13190 | bdc_loss:    0.28269\n",
      "epoch: 7000.00000 | total_loss:    0.28071 | domain_loss:    0.10478 | bdc_loss:    0.28248\n",
      "epoch: 7200.00000 | total_loss:    0.28027 | domain_loss:    0.08299 | bdc_loss:    0.28227\n",
      "epoch: 7400.00000 | total_loss:    0.27987 | domain_loss:    0.06568 | bdc_loss:    0.28204\n",
      "epoch: 7600.00000 | total_loss:    0.27950 | domain_loss:    0.05220 | bdc_loss:    0.28179\n",
      "epoch: 7800.00000 | total_loss:    0.27914 | domain_loss:    0.04213 | bdc_loss:    0.28153\n",
      "epoch: 8000.00000 | total_loss:    0.27879 | domain_loss:    0.03428 | bdc_loss:    0.28126\n",
      "epoch: 8200.00000 | total_loss:    0.27844 | domain_loss:    0.02882 | bdc_loss:    0.28096\n",
      "epoch: 8400.00000 | total_loss:    0.27809 | domain_loss:    0.02501 | bdc_loss:    0.28065\n",
      "epoch: 8600.00000 | total_loss:    0.27774 | domain_loss:    0.02269 | bdc_loss:    0.28031\n",
      "epoch: 8800.00000 | total_loss:    0.27736 | domain_loss:    0.02123 | bdc_loss:    0.27995\n",
      "epoch: 9000.00000 | total_loss:    0.27698 | domain_loss:    0.02095 | bdc_loss:    0.27956\n",
      "epoch: 9200.00000 | total_loss:    0.27656 | domain_loss:    0.02123 | bdc_loss:    0.27914\n",
      "epoch: 9400.00000 | total_loss:    0.27610 | domain_loss:    0.01969 | bdc_loss:    0.27869\n",
      "epoch: 9600.00000 | total_loss:    0.27561 | domain_loss:    0.01985 | bdc_loss:    0.27819\n",
      "epoch: 9800.00000 | total_loss:    0.27507 | domain_loss:    0.02034 | bdc_loss:    0.27765\n",
      "epoch: 10000.00000 | total_loss:    0.27448 | domain_loss:    0.01988 | bdc_loss:    0.27705\n",
      "epoch: 10200.00000 | total_loss:    0.27383 | domain_loss:    0.02032 | bdc_loss:    0.27640\n",
      "epoch: 10400.00000 | total_loss:    0.27312 | domain_loss:    0.02137 | bdc_loss:    0.27567\n",
      "epoch: 10600.00000 | total_loss:    0.27231 | domain_loss:    0.02022 | bdc_loss:    0.27485\n",
      "epoch: 10800.00000 | total_loss:    0.27140 | domain_loss:    0.02050 | bdc_loss:    0.27394\n",
      "epoch: 11000.00000 | total_loss:    0.27037 | domain_loss:    0.02002 | bdc_loss:    0.27290\n",
      "epoch: 11200.00000 | total_loss:    0.26920 | domain_loss:    0.01993 | bdc_loss:    0.27171\n",
      "epoch: 11400.00000 | total_loss:    0.26787 | domain_loss:    0.02253 | bdc_loss:    0.27035\n",
      "epoch: 11600.00000 | total_loss:    0.26626 | domain_loss:    0.01921 | bdc_loss:    0.26876\n",
      "epoch: 11800.00000 | total_loss:    0.26441 | domain_loss:    0.01916 | bdc_loss:    0.26689\n",
      "epoch: 12000.00000 | total_loss:    0.26223 | domain_loss:    0.01934 | bdc_loss:    0.26468\n",
      "epoch: 12200.00000 | total_loss:    0.25960 | domain_loss:    0.01674 | bdc_loss:    0.26205\n",
      "epoch: 12400.00000 | total_loss:    0.25646 | domain_loss:    0.01500 | bdc_loss:    0.25890\n",
      "epoch: 12600.00000 | total_loss:    0.25271 | domain_loss:    0.01325 | bdc_loss:    0.25513\n",
      "epoch: 12800.00000 | total_loss:    0.24823 | domain_loss:    0.01140 | bdc_loss:    0.25062\n",
      "epoch: 13000.00000 | total_loss:    0.24288 | domain_loss:    0.00964 | bdc_loss:    0.24523\n",
      "epoch: 13200.00000 | total_loss:    0.23651 | domain_loss:    0.00862 | bdc_loss:    0.23881\n",
      "epoch: 13400.00000 | total_loss:    0.22907 | domain_loss:    0.01458 | bdc_loss:    0.23124\n",
      "epoch: 13600.00000 | total_loss:    0.22016 | domain_loss:    0.00567 | bdc_loss:    0.22233\n",
      "epoch: 13800.00000 | total_loss:    0.21006 | domain_loss:    0.00443 | bdc_loss:    0.21214\n",
      "epoch: 14000.00000 | total_loss:    0.19862 | domain_loss:    0.00717 | bdc_loss:    0.20056\n",
      "epoch: 14200.00000 | total_loss:    0.18586 | domain_loss:    0.00358 | bdc_loss:    0.18770\n",
      "epoch: 14400.00000 | total_loss:    0.17241 | domain_loss:    0.02854 | bdc_loss:    0.17386\n",
      "epoch: 14600.00000 | total_loss:    0.15805 | domain_loss:    0.00532 | bdc_loss:    0.15959\n",
      "epoch: 14800.00000 | total_loss:    0.14389 | domain_loss:    0.00888 | bdc_loss:    0.14525\n",
      "epoch: 15000.00000 | total_loss:    0.13018 | domain_loss:    0.00187 | bdc_loss:    0.13148\n",
      "epoch: 15200.00000 | total_loss:    0.11778 | domain_loss:    0.00609 | bdc_loss:    0.11891\n",
      "epoch: 15400.00000 | total_loss:    0.10687 | domain_loss:    0.01787 | bdc_loss:    0.10777\n",
      "epoch: 15600.00000 | total_loss:    0.09748 | domain_loss:    0.00069 | bdc_loss:    0.09846\n",
      "epoch: 15800.00000 | total_loss:    0.08990 | domain_loss:    0.00056 | bdc_loss:    0.09080\n",
      "epoch: 16000.00000 | total_loss:    0.08399 | domain_loss:    0.00051 | bdc_loss:    0.08483\n",
      "epoch: 16200.00000 | total_loss:    0.07955 | domain_loss:    0.00057 | bdc_loss:    0.08034\n",
      "epoch: 16400.00000 | total_loss:    0.07641 | domain_loss:    0.01100 | bdc_loss:    0.07707\n",
      "epoch: 16600.00000 | total_loss:    0.07402 | domain_loss:    0.00072 | bdc_loss:    0.07476\n",
      "epoch: 16800.00000 | total_loss:    0.07242 | domain_loss:    0.00027 | bdc_loss:    0.07315\n",
      "epoch: 17000.00000 | total_loss:    0.07132 | domain_loss:    0.00034 | bdc_loss:    0.07204\n",
      "epoch: 17200.00000 | total_loss:    0.07062 | domain_loss:    0.00666 | bdc_loss:    0.07126\n",
      "epoch: 17400.00000 | total_loss:    0.07001 | domain_loss:    0.00031 | bdc_loss:    0.07072\n",
      "epoch: 17600.00000 | total_loss:    0.06969 | domain_loss:    0.00826 | bdc_loss:    0.07031\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 17800.00000 | total_loss:    0.06931 | domain_loss:    0.00023 | bdc_loss:    0.07001\n",
      "epoch: 18000.00000 | total_loss:    0.06906 | domain_loss:    0.00024 | bdc_loss:    0.06976\n",
      "epoch: 18200.00000 | total_loss:    0.06886 | domain_loss:    0.00024 | bdc_loss:    0.06956\n",
      "epoch: 18400.00000 | total_loss:    0.06873 | domain_loss:    0.00383 | bdc_loss:    0.06938\n",
      "epoch: 18600.00000 | total_loss:    0.06854 | domain_loss:    0.00031 | bdc_loss:    0.06923\n",
      "epoch: 18800.00000 | total_loss:    0.06842 | domain_loss:    0.00103 | bdc_loss:    0.06910\n",
      "epoch: 19000.00000 | total_loss:    0.06936 | domain_loss:    0.10701 | bdc_loss:    0.06898\n",
      "epoch: 19200.00000 | total_loss:    0.06819 | domain_loss:    0.00027 | bdc_loss:    0.06887\n",
      "epoch: 19400.00000 | total_loss:    0.06947 | domain_loss:    0.13827 | bdc_loss:    0.06877\n",
      "epoch: 19600.00000 | total_loss:    0.06800 | domain_loss:    0.00034 | bdc_loss:    0.06868\n",
      "epoch: 19800.00000 | total_loss:    0.06791 | domain_loss:    0.00032 | bdc_loss:    0.06860\n"
     ]
    }
   ],
   "source": [
    "epoch_number_list = []\n",
    "total_loss_list = []\n",
    "domain_loss_list = []\n",
    "boundary_loss_list = []\n",
    "uxy_list = []\n",
    "dudx_list = []\n",
    "dudy_list = []\n",
    "d2udx2_list = []\n",
    "d2udy2_list = []\n",
    "d2udxdy_list = []\n",
    "laplace_list = []\n",
    "pde_model_train.load_weights('picn_initial_weights.h5')\n",
    "pde_model_train.compile(optimizer=keras.optimizers.Adam(learning_rate=0.0002), loss=\"mse\", loss_weights = [0.01, 0.99])\n",
    "pde_model_train.fit(x=training_input_data, \n",
    "                    y=training_label_data, \n",
    "                    epochs=20000, verbose=0,\n",
    "                    callbacks=callbacks)\n",
    "pde_model_train.load_weights('picn_best_weights.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "983f2f78",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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aqiifzelVLzWOrai9tKzXInk7GR+2P0DYX5hXN35ak+HI4QQQgghPECS5UqsO7yO6T9MZ2TbkZIsCyGEEOKCsHjxYh577LFyy6Kioli4cKGHIvI8SZYr0T+iP+BKmp3aiUHJvZBCCCGEOL9dfvnlXH755Z4Oo1GRDLASEQERtAxoSVZRFrtSd3k6HCGEEEII4QGSLFehtHd5TfIaD0cihBBCCCE8QZLlKrhn8jssM/kJIYQQQlyIJFmuQmmyLD3LQgghhBAVi4uL4/7776/TfU6dOpX58+fX6T7PltzgV4Xe4b0J8gqimW8zHE4HRoPR0yEJIYQQQjQ4u92OyVRx2hgbG0tsbIUlis8L0rNcBR+zD6l/S+WXyb9IoiyEEEKIRuff//43nTt3ZuTIkUyaNImXX36ZTZs2MWDAAHr27Mk111xDRkYGO3fupF+/fu7tDhw4QM+ePQGIj49n6NCh9OnTh8svv5yjR48CMGzYMP7+978zdOhQXn/9dYYNG8Zjjz1Gv3796NixIytXrgRcU16PHTsWcM3uN23aNIYNG0bbtm154403qoy1OpYuXUpMTAw9evRg2rRpFBUVATBjxgy6du1Kz549eeSRRwD46quv6N69O7169WLIkCG1vLou0rN8BlIyTgghhBDVoZ5Rla57Z+w73NnnTgDejX+Xv3z/l0rb6qeqN7tyXFwcX3/9NRs3bsRut9O7d2/69OnDLbfcwv/+9z+GDh3KP//5T5555hlee+01iouL2bdvH23btmXevHnccMMN2Gw27rvvPr799ltCQ0OZN28eTzzxBB988AEAmZmZLF++HIBFixZht9tZt24dP/74I8888wxLliw5La6EhAR+++03cnJy6NSpE3fddRebN2+uMNYzKSwsZOrUqSxdupSOHTtyyy23MHPmTG655RYWLlxIQkICSikyMzMB+Ne//sXixYuJiIhwL6styQSrodhRTGJ6oqfDEEIIIYRwW7VqFVdddRXe3t74+/tz5ZVXkpeXR2ZmJkOHDgVgypQprFixAoAbbriBL7/8EoB58+YxYcIEdu3axbZt2xg5ciTR0dE8++yzJCcnu48xYcKEcsccP348AH369OHAgQMVxjVmzBisVishISE0a9aM48ePVxhrdezatYuoqCg6duxY7nwCAgLw8vLi9ttvZ8GCBfj4+AAwcOBApk6dynvv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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df=pd.DataFrame({'epoch': epoch_number_list, \n",
    "                 'total_loss': total_loss_list, \n",
    "                 'governing_loss': domain_loss_list, \n",
    "                 'boundary_loss': boundary_loss_list})\n",
    "\n",
    "plt.figure(figsize=(12, 4))\n",
    "plt.plot( 'epoch', 'total_loss', data=df, marker='o', markerfacecolor='red', markersize=2, color='skyblue', linewidth=3)\n",
    "plt.plot( 'epoch', 'governing_loss', data=df, marker='', color='green', linewidth=2, linestyle='dashed')\n",
    "plt.plot( 'epoch', 'boundary_loss', data=df, marker='', color='blue', linewidth=2, linestyle='dashed')\n",
    "plt.legend()\n",
    "#plt.xscale('log')\n",
    "plt.yscale('log')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "06668b77",
   "metadata": {},
   "outputs": [],
   "source": [
    "[x_m, y_m, uxy, dudx, dudy, d2udx2, d2udy2, d2udxdy, laplace] = pde_model.predict(training_input_data[:3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "fb52c8a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'smooth')"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x216 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(1,4,constrained_layout=False, figsize=(18, 3))\n",
    "#\n",
    "ax = axs.ravel()[0]\n",
    "temp = uxy[0,:,:,0]\n",
    "cs = ax.contourf(x_domain, y_domain, uxy[0,:,:,0],20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('prediction')\n",
    "#\n",
    "ax = axs.ravel()[1]\n",
    "cs = ax.contourf(x_domain, y_domain, truth_data,20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('truth')\n",
    "#\n",
    "ax = axs.ravel()[2]\n",
    "cs = ax.contourf(x_domain, y_domain, uxy[0,:,:,0]-truth_data,20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('error')\n",
    "#\n",
    "ax = axs.ravel()[3]\n",
    "cs = ax.contourf(x_domain, y_domain, truth_smooth,20)\n",
    "fig.colorbar(cs, ax=ax, shrink=0.9)\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_title('smooth')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "f54f1a38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.06859568073300815"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean((uxy[0,:,:,0]-truth_data)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "6ad7101d",
   "metadata": {},
   "outputs": [],
   "source": [
    "picn_process_data = {'x_domain':x_domain,\n",
    "                     'y_domain':y_domain,\n",
    "                     'epoch_number_list':np.asarray(epoch_number_list),\n",
    "                     'total_loss_list':np.asarray(total_loss_list),\n",
    "                     'domain_loss_list':np.asarray(domain_loss_list),\n",
    "                     'boundary_loss_list':np.asarray(boundary_loss_list),\n",
    "                     'truth_smooth':np.asarray(truth_smooth),\n",
    "                     'truth_data':np.asarray(truth_data),\n",
    "                     'uxy_list':np.concatenate(uxy_list,axis=0),\n",
    "                     'dudx_list':np.concatenate(dudx_list,axis=0),\n",
    "                     'dudy_list':np.concatenate(dudy_list,axis=0),\n",
    "                     'd2udx2_list':np.concatenate(d2udx2_list,axis=0),\n",
    "                     'd2udy2_list':np.concatenate(d2udy2_list,axis=0),\n",
    "                     'd2udxdy_list':np.concatenate(d2udxdy_list,axis=0),\n",
    "                     'laplace_list':np.concatenate(laplace_list,axis=0)}\n",
    "savemat('picn_process_data.mat', picn_process_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1fea3a2a",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
